1. Technical Field
The present disclosure generally relates to the operation of multiple processors within an information handling system, and in particular relates to improving thread scheduling and execution in a multi-processor system within an information handling system.
2. Description of the Related Art
As the value and use of information continue to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes, thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
The information handling system can be designed with one or more physical processors that each have one or more cores. Each of the processors is a single computing component with one or more independent processor cores or cores, which are central processing units that are each able to read and execute program instructions or software code. The program instructions or software code can be regular computer instructions. The multiple processors can be mounted to a printed circuit board or backplane. The multiple cores can run multiple instructions at the same time, increasing the overall processing speed for programs. The multiple cores typically are integrated onto a single integrated circuit die or integrated circuit.
The operating system enables software applications to execute on the available hardware, and these software applications are comprised of program code packaged in an executable format, and these applications may create one or more threads which allow for parallel and sometimes synchronized execution of an applications code. The operating system includes a mechanism that responds to an application's request to create threads by allocating resources for the thread and enabling the thread's execution across the available cores. Threads can be assigned to a core based on a thread mask. The thread mask determines which cores that a thread may be assigned to. The threads can be assigned to alternating cores of an individual processor, for example to optimize performance when resources such as cache or fetch and execution units are shared between cores. This alternation scheme has shown to improve performance on processors which share resources between cores, for example Hyperthreading™ in certain Intel™ processors which split a core into two logical processors. Various processors support increased execution rates or frequencies, often referred to as turbo states, by dynamic adjustment of the processor frequency based upon workload. A processor that has only a few cores being utilized can operate at higher frequencies (clock rate) because of reduced power and cooling needs. A processor that has a majority of cores being utilized operates at lower frequencies because of increased power and cooling needs.
While the operating system can allocate threads for execution across various cores, unfortunately, the operating system does not distinguish between different individual processors that are mounted to separate sockets of a printed circuit board that are executing threads in a multi-socket system. The operating system may treat all of the available logical processors across all sockets as one large, contiguous bank of processors, and not take into account the algorithms used to adjust operating frequency of the processors grouped into one or more of the various sockets. The result of the operating system not distinguishing between different processors executing threads in a multi-processor system is that one processor can be operating at 100% utilization with a resulting low processing frequency, while another processor is essentially idle. A method for improving thread allocation across processors and thread execution speed in a multi-processor system is therefore needed.